home *** CD-ROM | disk | FTP | other *** search
/ Computer Inter@ctive 17 / Computer Interactive cdrom 17 - gen 99.iso / ZDNETIT / CONTENT / OPTIVDOS.ZIP / INCLUDE.ZIP / VCDMATH.H < prev    next >
Encoding:
C/C++ Source or Header  |  1998-10-21  |  11.2 KB  |  228 lines

  1. /*  VCDmath.h
  2.  
  3.   vector management functions:
  4.   math functions performed on each individual element of an
  5.   array or vector of data type "dComplex" (complex double)
  6.  
  7.   Copyright (c) 1996-1998 by Martin Sander
  8.   All Rights Reserved.
  9. */
  10.  
  11. #ifndef __VCDMATH_H
  12. #define __VCDMATH_H
  13.  
  14. #ifndef __VCDSTD_H 
  15. #include <VCDstd.h>
  16. #endif
  17.  
  18.  
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22.  
  23. /************************* Comparisons ****************************/
  24.  
  25. ui   __vf   VCD_cmp_eq0( cdVector Y, cdVector X, ui size );
  26. ui   __vf   VCD_cmp_ne0( cdVector Y, cdVector X, ui size );
  27. ui   __vf   VCD_cmp_eqC( cdVector Y, cdVector X, ui size, dComplex C );
  28. ui   __vf   VCD_cmp_neC( cdVector Y, cdVector X, ui size, dComplex C );
  29. ui   __vf   VCD_cmp_eqV( cdVector Z, cdVector X, cdVector Y, ui size );
  30. ui   __vf   VCD_cmp_neV( cdVector Z, cdVector X, cdVector Y, ui size );
  31. ui   __vf   VCD_cmp_eq0ind( uiVector Ind, cdVector X, ui size );
  32. ui   __vf   VCD_cmp_ne0ind( uiVector Ind, cdVector X, ui size );
  33. ui   __vf   VCD_cmp_eqCind( uiVector Ind, cdVector X, ui size, dComplex C );
  34. ui   __vf   VCD_cmp_neCind( uiVector Ind, cdVector X, ui size, dComplex C );
  35. ui   __vf   VCD_cmp_eqVind( uiVector Ind, cdVector X, cdVector Y, ui size );
  36. ui   __vf   VCD_cmp_neVind( uiVector Ind, cdVector X, cdVector Y, ui size );
  37.  
  38.  
  39. /********************  Standard Arithmetics   ***************************/
  40.  
  41. void  __vf   VCD_limit(  cdVector Y, cdVector X, ui size, dComplex Min,
  42.                                                           dComplex Max );
  43. void  __vf   VCD_flush0( cdVector Y, cdVector X, ui size, dComplex AbsMin );
  44. void  __vf   VCD_flushInv( cdVector Y, cdVector X, ui size, dComplex AbsMin );
  45.  
  46. void  __vf   VCDx_equV( cdVector Y, cdVector X, ui size,
  47.                         dComplex A, dComplex B );
  48. void  __vf   VCD_addC(  cdVector Y, cdVector X, ui size, dComplex C );
  49. void  __vf   VCD_subC(  cdVector Y, cdVector X, ui size, dComplex C );
  50. void  __vf   VCD_subrC( cdVector Y, cdVector X, ui size, dComplex C );
  51. void  __vf   VCD_mulC(  cdVector Y, cdVector X, ui size, dComplex C );
  52. void  __vf   VCD_divC(  cdVector Y, cdVector X, ui size, dComplex C );
  53. void  __vf   VCD_divrC( cdVector Y, cdVector X, ui size, dComplex C );
  54. void  __vf   VCDx_divrC( cdVector Y, cdVector X, ui size,
  55.                          dComplex A, dComplex B, dComplex C );
  56.  
  57. void  __vf   VCD_addReC(  cdVector Y, cdVector X, ui size, double CRe );
  58. void  __vf   VCD_subReC(  cdVector Y, cdVector X, ui size, double CRe );
  59. void  __vf   VCD_subrReC( cdVector Y, cdVector X, ui size, double CRe );
  60. void  __vf   VCD_mulReC(  cdVector Y, cdVector X, ui size, double CRe );
  61. void  __vf   VCD_divReC(  cdVector Y, cdVector X, ui size, double CRe );
  62. void  __vf   VCD_divrReC( cdVector Y, cdVector X, ui size, double CRe );
  63.  
  64. void  __vf   VCD_addV(  cdVector Z, cdVector X, cdVector Y, ui size );
  65. void  __vf   VCD_subV(  cdVector Z, cdVector X, cdVector Y, ui size );
  66. void  __vf   VCD_subrV( cdVector Z, cdVector X, cdVector Y, ui size );
  67. void  __vf   VCD_mulV(  cdVector Z, cdVector X, cdVector Y, ui size );
  68. void  __vf   VCD_divV(  cdVector Z, cdVector X, cdVector Y, ui size );
  69. void  __vf   VCD_divrV( cdVector Z, cdVector X, cdVector Y, ui size );
  70.  
  71. void  __vf   VCD_addReV(  cdVector Z, cdVector X, dVector Y, ui size );
  72. void  __vf   VCD_subReV(  cdVector Z, cdVector X, dVector Y, ui size );
  73. void  __vf   VCD_subrReV( cdVector Z, cdVector X, dVector Y, ui size );
  74. void  __vf   VCD_mulReV(  cdVector Z, cdVector X, dVector Y, ui size );
  75. void  __vf   VCD_divReV(  cdVector Z, cdVector X, dVector Y, ui size );
  76. void  __vf   VCD_divrReV( cdVector Z, cdVector X, dVector Y, ui size );
  77.  
  78. void  __vf   VCDx_addV(  cdVector Z, cdVector X, cdVector Y, ui size,
  79.                          dComplex A, dComplex B );
  80. void  __vf   VCDx_subV(  cdVector Z, cdVector X, cdVector Y, ui size,
  81.                          dComplex A, dComplex B );
  82. void  __vf   VCDx_subrV( cdVector Z, cdVector X, cdVector Y, ui size,
  83.                          dComplex A, dComplex B );
  84. void  __vf   VCDx_mulV(  cdVector Z, cdVector X, cdVector Y, ui size,
  85.                          dComplex A, dComplex B );
  86. void  __vf   VCDx_divV(  cdVector Z, cdVector X, cdVector Y, ui size,
  87.                          dComplex A, dComplex B );
  88. void  __vf   VCDx_divrV( cdVector Z, cdVector X, cdVector Y, ui size,
  89.                          dComplex A, dComplex B );
  90.  
  91. void  __vf   VCDx_addReV(  cdVector Z, cdVector X, dVector Y, ui size,
  92.                            dComplex A, dComplex B );
  93. void  __vf   VCDx_subReV(  cdVector Z, cdVector X, dVector Y, ui size,
  94.                            dComplex A, dComplex B );
  95. void  __vf   VCDx_subrReV( cdVector Z, cdVector X, dVector Y, ui size,
  96.                            dComplex A, dComplex B );
  97. void  __vf   VCDx_mulReV(  cdVector Z, cdVector X, dVector Y, ui size,
  98.                            dComplex A, dComplex B );
  99. void  __vf   VCDx_divReV(  cdVector Z, cdVector X, dVector Y, ui size,
  100.                            dComplex A, dComplex B );
  101. void  __vf   VCDx_divrReV( cdVector Z, cdVector X, dVector Y, ui size,
  102.                            dComplex A, dComplex B );
  103.  
  104. void __vf VCD_lincomb( cdVector Z, cdVector X, cdVector Y, ui size,
  105.                        dComplex CX, dComplex CY );  /* Z[i]=CX*X[i]+CY*Y[i] */
  106.  
  107. /***************** Functions of a sub-set of elements  ********************/
  108.  
  109. void  __vf  VCD_subvector_equC(  cdVector Y, ui subsiz, unsigned samp,
  110.                                  dComplex C );
  111. void  __vf  VCD_subvector_equV(  cdVector Y, ui subsiz, unsigned samp,
  112.                                  cdVector X );
  113.  
  114. void  __vf  VCD_subvector_addC(  cdVector Y, ui subsiz, unsigned samp,
  115.                                  dComplex C );
  116. void  __vf  VCD_subvector_subC(  cdVector Y, ui subsiz, unsigned samp,
  117.                                  dComplex C );
  118. void  __vf  VCD_subvector_subrC( cdVector Y, ui subsiz, unsigned samp,
  119.                                  dComplex C );
  120. void  __vf  VCD_subvector_mulC(  cdVector Y, ui subsiz, unsigned samp,
  121.                                  dComplex C );
  122. void  __vf  VCD_subvector_divC(  cdVector Y, ui subsiz, unsigned samp,
  123.                                  dComplex C );
  124. void  __vf  VCD_subvector_divrC( cdVector Y, ui subsiz, unsigned samp,
  125.                                  dComplex C );
  126.  
  127. void  __vf  VCD_subvector_addV(  cdVector Y, ui subsiz, unsigned samp,
  128.                                  cdVector X );
  129. void  __vf  VCD_subvector_subV(  cdVector Y, ui subsiz, unsigned samp,
  130.                                  cdVector X );
  131. void  __vf  VCD_subvector_subrV( cdVector Y, ui subsiz, unsigned samp,
  132.                                  cdVector X );
  133. void  __vf  VCD_subvector_mulV(  cdVector Y, ui subsiz, unsigned samp,
  134.                                  cdVector X );
  135. void  __vf  VCD_subvector_divV(  cdVector Y, ui subsiz, unsigned samp,
  136.                                  cdVector X );
  137. void  __vf  VCD_subvector_divrV( cdVector Y, ui subsiz, unsigned samp,
  138.                                  cdVector X );
  139.  
  140.  
  141. /********************  Mathematical Functions ***************************/
  142.  
  143. int __vf   VCD_neg(  cdVector Y, cdVector X, ui size );
  144. int __vf   VCD_conj( cdVector Y, cdVector X, ui size );
  145. int __vf   VCD_abs(   dVector Y, cdVector X, ui size );
  146. int __vf   VCD_inv(  cdVector Y, cdVector X, ui size );
  147. int __vf   VCDx_inv( cdVector Y, cdVector X, ui size, dComplex A, dComplex B );
  148.  
  149. int  __vf   VCD_square(  cdVector Y, cdVector X, ui size );
  150. int  __vf   VCDx_square( cdVector Y, cdVector X, ui size,
  151.                          dComplex A, dComplex B );
  152. int  __vf   VCD_cubic(   cdVector Y, cdVector X, ui size );
  153. int  __vf   VCDx_cubic(  cdVector Y, cdVector X, ui size,
  154.                          dComplex A, dComplex B );
  155. int  __vf   VCD_quartic( cdVector Y, cdVector X, ui size );
  156. int  __vf   VCDx_quartic( cdVector Y, cdVector X, ui size,
  157.                           dComplex A, dComplex B );
  158. int  __vf   VCD_ipow(    cdVector Y, cdVector X, ui size, int ipow );
  159. int  __vf   VCDx_ipow(   cdVector Y, cdVector X, ui size, int ipow,
  160.                          dComplex A, dComplex B, dComplex C );
  161. int  __vf   VCD_pow(     cdVector Y, cdVector X, ui size, dComplex Expo );
  162. int  __vf   VCDx_pow(    cdVector Y, cdVector X, ui size,  dComplex Expo,
  163.                          dComplex A, dComplex B, dComplex C );
  164. int  __vf   VCD_powReExpo(  cdVector Y, cdVector X, ui size, double Expo );
  165. int  __vf   VCDx_powReExpo( cdVector Y, cdVector X, ui size, double Expo,
  166.                             dComplex A, dComplex B, dComplex C );
  167.  
  168. int  __vf   VCD_sqrt(  cdVector Y, cdVector X, ui size );
  169. int  __vf   VCDx_sqrt( cdVector Y, cdVector X, ui size,
  170.                        dComplex A, dComplex B, dComplex C );
  171.  
  172. int  __vf   VCD_log(   cdVector Y, cdVector X, ui size );
  173. int  __vf   VCD_log2(  cdVector Y, cdVector X, ui size );
  174. int  __vf   VCD_log10( cdVector Y, cdVector X, ui size );
  175. #define     VCD_ln   VCD_log
  176. int  __vf   VCDx_log(  cdVector Y, cdVector X, ui size,
  177.                        dComplex A, dComplex B, dComplex C );
  178. int  __vf   VCDx_log2( cdVector Y, cdVector X, ui size,
  179.                        dComplex A, dComplex B, dComplex C );
  180. int  __vf   VCDx_log10( cdVector Y, cdVector X, ui size,
  181.                         dComplex A, dComplex B, dComplex C );
  182. #define     VCDx_ln    VCDx_log
  183.  
  184. int  __vf   VCD_exp(  cdVector Y, cdVector X, ui size );
  185. int  __vf   VCDx_exp( cdVector Y, cdVector X, ui size,
  186.                        dComplex A, dComplex B, dComplex C );
  187. int  __vf   VCD_expArbBase(  cdVector Y, cdVector X, ui size, dComplex Base );
  188. int  __vf   VCDx_expArbBase( cdVector Y, cdVector X, ui size, dComplex Base,
  189.                              dComplex A, dComplex B, dComplex C );
  190.  
  191. int  __vf   VCD_sin(  cdVector Y, cdVector X, ui size );
  192. int  __vf   VCDx_sin( cdVector Y, cdVector X, ui size,
  193.                       dComplex A, dComplex B, dComplex C );
  194. int  __vf   VCD_cos(  cdVector Y, cdVector X, ui size );
  195. int  __vf   VCDx_cos( cdVector Y, cdVector X, ui size,
  196.                       dComplex A, dComplex B, dComplex C );
  197. int  __vf   VCD_tan(  cdVector Y, cdVector X, ui size );
  198. int  __vf   VCDx_tan( cdVector Y, cdVector X, ui size,
  199.                       dComplex A, dComplex B, dComplex C );
  200.  
  201. int  __vf   VCD_asin(  cdVector Y, cdVector X, ui size );
  202. int  __vf   VCDx_asin( cdVector Y, cdVector X, ui size,
  203.                        dComplex A, dComplex B, dComplex C );
  204. int  __vf   VCD_acos(  cdVector Y, cdVector X, ui size );
  205. int  __vf   VCDx_acos( cdVector Y, cdVector X, ui size,
  206.                        dComplex A, dComplex B, dComplex C );
  207. int  __vf   VCD_atan(  cdVector Y, cdVector X, ui size );
  208. int  __vf   VCDx_atan( cdVector Y, cdVector X, ui size,
  209.                        dComplex A, dComplex B, dComplex C );
  210.  
  211. int  __vf   VCD_sinh(  cdVector Y, cdVector X, ui size );
  212. int  __vf   VCDx_sinh( cdVector Y, cdVector X, ui size,
  213.                        dComplex A, dComplex B, dComplex C );
  214. int  __vf   VCD_cosh(  cdVector Y, cdVector X, ui size );
  215. int  __vf   VCDx_cosh( cdVector Y, cdVector X, ui size,
  216.                        dComplex A, dComplex B, dComplex C );
  217. int  __vf   VCD_tanh(  cdVector Y, cdVector X, ui size );
  218. int  __vf   VCDx_tanh( cdVector Y, cdVector X, ui size,
  219.                        dComplex A, dComplex B, dComplex C );
  220.  
  221.  
  222. #ifdef __cplusplus
  223. }
  224. #endif
  225.  
  226.  
  227. #endif /* __VCDMATH_H */
  228.